package org.persistente.manipula.conexao;

import java.sql.Connection;

import org.persistente.manipula.mapeamento.Manipulador;
import org.persistente.manipula.mapeamento.MapaObjetoRelacional;

/**
 * Interface que encapsula as diferenças entre bancos de dados diferentes.
 */
public interface DriverBanco {

    /**
     * Retorna o nome do driver.
     * @return Nome do driver.
     */
	public String getNomeDriver();


    /**
     * Retorna uma string de conexão.
     * @return String de conexão.
     */
	public String getStringConexao();


    /**
     * Cria manipulador específico de um banco de dados.
     * @param <T> Tipo de entidade do manipulador.
     * @param mapa Mapa objeto relacional.
     * @param conexao Conexão do banco de dados.
     * @return Manipulador do banco de dados.
     */
	public <T> Manipulador<T> criaManipulador(MapaObjetoRelacional mapa, Connection conexao);
}
